package com.example.dependency_injection;

import java.io.File;
import java.util.function.Supplier;

/**
 * 当类依赖与一个或多个底层资源，建议使用依赖注入的方式引入资源
 * 硬编码的方式，即直接在类中获取资源，不够灵活且不易测试
 */
public class CustomFileReader {
    private File file;

    /**
     * Supplier 结果的提供者，结果返回一个对象且不接受参数，可以通过 lambda 表达式或方法引用实现
     * Consumer 表示一个操作，接收单个输入参数且不返回结果
     * 两者都是 Java8 提供的，通过函数式接口实现
     * @param supplier
     */
    public CustomFileReader(Supplier<? extends File> supplier) {
        file = supplier.get();
    }

    public String getFileName() {
        return file.getName();
    }

    public String getFilePath() {
        return file.getPath();
    }
}
